import datetime
from mcp.server.fastmcp import FastMCP
import re
mcp = FastMCP()

@mcp.tool(
    name="calculate_num",
    description="计算四则运算表达式"
)
def calculate(expression: str) -> float:  
    """计算四则运算表达式        
    参数:           
        expression: 数学表达式字符串，如 "1 + 2 * 3"        
    返回:            
    计算结果       
    """    
    try:
        # 移除表达式中的空格
        expr = expression.replace(" ", "")
        
        # 验证表达式只包含数字、小数点和基本运算符
        if not re.match(r'^[0-9+\-*/().]+$', expr):
            raise ValueError("表达式包含无效字符")
        
        # 安全地计算表达式
        result = eval(expr)
        return float(result)
    except Exception as e:
        raise ValueError(f"计算表达式 '{expression}' 时出错: {str(e)}")

@mcp.tool(
    name="get_current_time",
    description="获取当前时间"
)
def get_current_time() -> str:
    """获取当前时间        
    返回:            
    当前时间字符串       
    """    
    return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

@mcp.tool(
    name="auto_generate_word",
    description="根据提示自动生成单词"
)
def auto_generate_word(prompt: str) -> str:
    """根据提示自动生成单词        
    参数:           
        prompt: 提示字符串，如 "一个随机单词"        
    返回:            
    生成的单词字符串       
    """    
    # 这里简单模拟一个单词生成过程
    return "example_word"

if __name__ == "__main__":
    mcp.run(transport='stdio')